(function () {
    'use strict';

    angular.module('app')
        .config(['$stateProvider', '$urlRouterProvider', '$httpProvider', configFn]);

    var routes = {
        'pages_404': {
            url: '/pages/404',
            templateUrl: 'views/pages/404.html',
            data: {
                dontRequireAuth: true
            }
        },
        'pages_500': {
            url: '/pages/500',
            templateUrl: 'views/pages/500.html',
            data: {
                dontRequireAuth: true
            }
        },
        'pages_forgot-password': {
            url: '/pages/forgot-password',
            templateUrl: 'views/pages/forgot-password.html',
            data: {
                dontRequireAuth: true
            }
        },
        'pages_signin': {
            url: '/pages/signin',
            templateUrl: 'views/pages/signin.html',
            data: {
                dontRequireAuth: true
            }
        },
        'pages_signup': {
            url: '/pages/signup',
            templateUrl: 'views/pages/signup.html',
            data: {
                dontRequireAuth: true
            }
        },
        'dashboard': {
            url: '/dashboard',
            templateUrl: 'views/dashboard.html'
        },
        'pages_profile': {
            url: '/pages/profile',
            templateUrl: 'views/pages/profile.html'
        },
        'musculos_listar': {
            url: '/musculos/listar',
            templateUrl: 'views/musculos/listar.html'
        },
        'musculos_editar': {
            url: '/musculos/editar/:id',
            templateUrl: 'views/musculos/editar.html'
        },
        'musculos_registrar': {
            url: '/musculos/registrar',
            templateUrl: 'views/musculos/registrar.html'
        },
        'pagos_listar': {
            url: '/pagos/listar',
            templateUrl: 'views/pagos/listar.html'
        },
        'maquinas_listar': {
            url: '/maquinas/listar',
            templateUrl: 'views/maquinas/listar.html'
        },
        'maquinas_editar': {
            url: '/maquinas/editar/:id',
            templateUrl: 'views/maquinas/editar.html'
        },
        'maquinas_registrar': {
            url: '/maquinas/registrar',
            templateUrl: 'views/maquinas/registrar.html'
        },
        'usuarios_listar': {
            url: '/usuarios/listar',
            templateUrl: 'views/usuarios/listar.html'
        },
        'usuarios_editar': {
            url: '/usuarios/editar/:id',
            templateUrl: 'views/usuarios/editar.html'
        },
        'usuarios_registrar': {
            url: '/usuarios/registrar',
            templateUrl: 'views/usuarios/registrar.html'
        },
        'ejercicios_listar': {
            url: '/ejercicios/listar',
            templateUrl: 'views/ejercicios/listar'
        },
        'PE_x_id': {
            url: '/plan-entrenamiento/detalle/:id',
            templateUrl: 'views/plan-entrenamiento/detalle-pe.html'
        },
        'PE_plantilla': {
            url: '/plan-entrenamiento/plantilla',
            templateUrl: 'views/plan-entrenamiento/plantilla-pe.html'
        },
        'PE_x_cliente': {
            url: '/plan-entrenamiento/pe-x-cliente',
            templateUrl: 'views/plan-entrenamiento/pe-x-cliente.html'
        },
        'citas': {
            url: '/citas',
            templateUrl: 'views/citas/listar.html'
        }
    };

    function configFn ($stateProvider, $urlRouterProvider, $httpProvider) {

        angular.forEach(routes, function(stateConfig, stateName) {
            $stateProvider.state(stateName, stateConfig);
        });

        $urlRouterProvider
            .when('/', '/dashboard')
            .otherwise('/dashboard');

        // global api error handling logic
        $httpProvider.interceptors.push('ServerErrorHandler');
    }

})();
